'use strict';
const Controller = require('egg').Controller;

class JwtController extends Controller {
  // 处理登录操作
  async doLogin() {
    const user = this.ctx.request.body.user; // user.username user.password
    if (user.username === 'xiaoming' && user.password === '123') {
      const user_jwt = { username: user.username };
      console.log(user_jwt);
      const token = this.app.jwt.sign(user, this.app.config.jwt.secret);
      this.ctx.body = {
        code: 20000, // 正常获取 成功
        token,
      };
    } else {
      this.ctx.body = {
        code: 40000, // 异常 失败
        msg: '用户名或密码错误',
      };
    }
  }


  // token没问题=>渲染数据  token有问题=>给予一定的提示
  async getMessage() {

    // let token = this.ctx.request.header.token;//获取token
    // // console.log(token);
    // // this.ctx.body = "hello jwt"
    // try {
    //     //校验token
    //     //verify(验证token)
    //     let decode = this.app.jwt.verify(token, this.app.config.jwt.secret)
    //     this.ctx.body = "hello jwt" //成功
    //     //{"username":"xiaoming","iat":1626750981}
    //     //iat是时间戳 代表token签发的时间
    // } catch (e) {
    //     this.ctx.body = "token 未能通过验证"
    // }
    this.ctx.body = 'hello jwt';
  }


  async index() {
    // this.ctx.body = "hello jwt"
    const user = {
      username: 'xiaoming',
    };
    // egg-jwt 生成token
    // sign签发(生成)token
    // 用户登录的时候执行
    const token = this.app.jwt.sign(user, this.app.config.jwt.secret);
    // this.ctx.body = token

    // if是判断true / false  try是判断程序是否报错 报错则执行catch
    try {
      // 校验token
      // verify(验证token)
      const decode = this.app.jwt.verify(token, this.app.config.jwt.secret);
      this.ctx.body = decode;
      // {"username":"xiaoming","iat":1626750981}
      // iat是时间戳 代表token签发的时间
    } catch (e) {
      this.ctx.body = 'token 未能通过验证';
    }


    // 用假的token "123456"
    // 得到的结果是：500 jwt malformed
  }
}
module.exports = JwtController;
